package com.cwl.po.loop;

/**
 * @program: cwl-performance-optimization
 * @description: 测试Break能否对For循环起到优化作用
 * @author: ChenWenLong
 * @create: 2019-11-22 11:55
 **/
public class TestBreakLoop {

    // 结论:for循环中当满足我们想要的操作之后加上break可以比较明显的提升性能
    // 如果两个for循环的层数相差不大时,那么是否加上break差别并不大,当外层小内层大,此时break就起到了很好的作用
    public static void main(String[] args) {
        System.out.println(testUseBreak());
        System.out.println(testNotUseBreak());
    }

    /**
     * 功能描述:
     * 〈测试不使用Break〉
     *
     * @params : []
     * @return : long
     * @author : cwl
     * @date : 2019/11/22 11:57
     */
    private static long testUseBreak() {
        long begin = System.currentTimeMillis();
        int c=0;
        for(int a=0;a<100;a++){
            for(int b=0;b<1000000;b++){
                c = c + a+b;
                break;
            }
        }
        int d = c;
        long end = System.currentTimeMillis();
        return end - begin;
    }

    /**
     * 功能描述:
     * 〈测试使用Break优化for循环〉
     *
     * @params : []
     * @return : long
     * @author : cwl
     * @date : 2019/11/22 11:56
     */
    private static long testNotUseBreak() {
        long begin = System.currentTimeMillis();
        int c=0;
        for(int a=0;a<100;a++){
            for(int b=0;b<1000000;b++){
                c = c + a+b;
            }
        }
        int d = c;
        long end = System.currentTimeMillis();
        return end - begin;
    }
}
